void sav_InitListHeader(struct List *list); // initializes the list header
struct Node *sav_GetHead(struct List *list); // returns the first node or NULL if empty
struct Node *sav_GetTail(struct List *list); // returns the last node or NULL if empty
long sav_ListLen(struct List *list); // returns the length of a list (i.e. the number of nodes)
long sav_TailLen(struct Node *node); // returns the number of nodes
long sav_NodeNum(struct List *list, struct Node *node); // returns the number of the node
struct Node *sav_FindNodeNum(struct List *list, long n); // returns the n-th node of the list or NULL
BOOL sav_ForAllNodes(struct List *list, BOOL (*)(struct Node *, APTR), APTR usrdata); // calls nodefun(node, userdata) for every node of the list
void sav_NodeToHead(struct List *list, struct Node *node); // moves a node to the top of the list
void sav_NodeToTail(struct List *list, struct Node *node); // moves a node to the tail of a list
int sav_InsertNodeABC(struct List *list, struct Node *node); // respectively to nodes name, the node will be alphabetically inserted
struct Node *sav_MakeNode(long size, char *name); // creates a node of size "size" and (optionally) duplicates the name and uses it as ln_Name
void sav_FreeNode(struct Node *node); // frees a node created with sav_MakeNode
void sav_FreeList(struct List *list); // disposes all nodes (see sav_MakeNode) of a list
void sav_AppendList(struct List *list1, struct List *list2); // appends list2 to the end of list1
struct Node *sav_FindNameNoCase(struct List *list, char *name); // searches the list for a node, where node's name equals the given one (ignore cases!)
long sav_NumFindNameNoCase(struct List *list, char *name); // searches the list for a node, where node's name equals the given one (ignore cases!) and returns the number of this node or -1
long sav_EasyRequest(struct Window *window, char *title, char *body, char *gads, APTR args); // see intuition.EasyRequestArgs
void sav_InitTAttr(struct TextAttr *tattr, struct TextFont *font); // init a TextAttr structure with values of font
ULONG sav_TextLength(char *string, struct TextFont *font); // get the size (pixels) of the string
APTR sav_StringF(char *fmtstring, APTR args); // format a string with the given args (use exec.AllocVec() for the resulting string)
APTR sav_StringF2(char *fmtstring, APTR args); // format a string with the given args (use savagelib.sav_AllocVec() for the resulting string)
long sav_RangeNumber(long num, long lowerrange, long upperrange); // if num is smaller/greater than lowerrange/upperrange the cut it to size and return num
long sav_MatchPatternNoCase(char *patter, char *string); // matches string and the pattern; return 1 for match, 0 for no match, -1 for an error
char *sav_DupString(char *str); // makes a copy of a string; uses exec.AllocVec for allocating the memory
char *sav_DupString2(char *str); // makes a copy of a string, uses sav_AllocVec for allocating the memory
char *sav_BStr2CStr(BPTR str); // takes the BPTR and copys the BSTR to a new AllocVec()`ed memory-area